﻿// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

//缓存有三种常见的设计模式
//1.Cache Aside Pattern (先更新数据再更新缓存)（旁路缓存）
//加载（Load）： 应用程序从缓存读取数据，如果缓存不存在，则从数据库中把数据加载到缓存。
//更新（Update）： 当数据发生变化时，应用程序负责更新数据库，并清除或更新相应的缓存项。这保持了缓存中的数据与数据库的一致性。
//优点： 简单、易于理解和实现。缓存中的数据是惰性加载的，减少了对缓存的依赖。
//缺点： 应用程序需要管理缓存，导致了代码中可能存在一致性维护的复杂性。

//Cache Through Pattern (基于DTS) (写穿模式)
//加载（Load）： 应用程序通过缓存接口请求数据，而不直接从数据库读取。如果缓存中不存在所需数据，缓存会负责从数据库中加载数据，然后返回给应用程序。
//更新（Update）： 与 Cache Aside 不同，Cache Through 模式中更新数据时，缓存并不直接参与。应用程序负责将更新操作发送到数据库，然后数据库负责更新数据（并通过DTS等方式将数据同步到缓存中），保持数据一致性。
//优点： 简化了应用程序对缓存的管理，数据库更直接地负责更新操作，减轻了应用程序的负担。
//缺点： 数据更新时，可能引起缓存和数据库之间的不一致，需要额外的机制来维护一致性。

//Cache Back Pattern (先更新缓存再更新数据库) (写后模式)
//加载（Load）： 应用程序通过缓存接口请求数据，缓存负责检查是否有缓存命中。如果缓存未命中，缓存会从数据库中加载数据并返回给应用程序。
//更新（Update）： 当数据需要更新时，应用程序负责将更新发送到缓存，缓存负责将更新异步地传递给数据库，以保持数据的一致性。
//优点： 提供了更好的性能，因为应用程序可以更快地获取数据。同时，通过异步更新数据库，降低了对数据库的直接压力。
//缺点： 引入了异步处理，可能会在一定程度上牺牲一致性。系统中需要处理缓存和数据库之间的同步问题。